package cn.tedu.charging.device.startup;

import cn.tedu.charging.device.dao.repository.StationCacheRepository;
import cn.tedu.charging.device.dao.repository.StationRepository;
import cn.tedu.charging.device.pojo.po.StationPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

@Component
@Slf4j
public class StationDataInit implements ApplicationRunner {

    @Autowired
    private StationRepository stationRespository;
    @Autowired
    @Qualifier("CacheGEOANDShareHash")
    private StationCacheRepository redisStationRespostory;

    /**
     * 该方法会在其它类初始化完成后调用，因此常用于做数据的预热工作，根据bean 的生命周期理解
     * @param args
     * @throws Exception
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("开始初始化充电站数据,进行缓存预热");
        List<StationPO> stationPOList = stationRespository.getAllStation();
        log.debug("从数据库中获取到{}个充电站数据,数据:{}",stationPOList.size(),stationPOList);
        // 判断是否为空
        if (!CollectionUtils.isEmpty(stationPOList)){
            // 保存 到redis
            log.debug("开始将充电站数据保存到redis");
            redisStationRespostory.saveStation2Redis(stationPOList);
            log.debug("成功将充电站数据保存到redis");
        }else {
            log.debug("从数据库中获取的充电站数据为空，数据有问题，警告");
        }
    }
}
